// 获取应用实例
const app = getApp();

// 添加宿舍等级判定函数
function getDormLevel(score) {
  if (score >= 90) return "优秀宿舍";
  if (score >= 75) return "良好宿舍";
  if (score >= 60) return "合格宿舍";
  return "不合格宿舍";
}

Page({
  data: {
    userInfo: {},
    tasks: [],
    topDorms: [],
    isLoading: true,
    dormLevel: "宿舍等级" // 默认宿舍等级标题
  },

  onLoad: function() {
    // 从本地存储获取用户数据
    const userData = wx.getStorageSync('userData');
    const userRole = wx.getStorageSync('userRole');
    
    if (!userData || !userRole) {
      wx.redirectTo({
        url: '/pages/login/login'
      });
      return;
    }
    
    // 设置用户信息到本地状态
    this.setData({
      userInfo: {
        ...userData,
        role: userRole
      }
    });
    
    console.log('首页加载 - 当前用户角色:', userRole);
    
    // 获取首页数据
    this.fetchHomeData();
  },

  onShow: function() {
    // 每次页面显示时重新获取用户信息并刷新数据
    this.getUserInfo();
    this.fetchHomeData();
  },

  onPullDownRefresh: function() {
    // 下拉刷新
    this.fetchHomeData().then(() => {
      wx.stopPullDownRefresh();
    });
  },

  // 获取用户信息
  getUserInfo: function() {
    // 从本地存储获取最新用户信息
    const userData = wx.getStorageSync('userData');
    const userRole = wx.getStorageSync('userRole');
    
    if (userData && userRole) {
      console.log('刷新页面 - 当前用户角色:', userRole);
      this.setData({
        userInfo: {
          ...userData,
          role: userRole
        }
      });
    } else {
      // 如果没有用户信息，重定向到登录页
      wx.redirectTo({
        url: '/pages/login/login'
      });
    }
  },

  // 获取首页数据
  fetchHomeData: async function() {
    try {
      // 显示加载状态
      this.setData({ isLoading: true });
      
      // 并行获取多个数据
      await Promise.all([
        this.fetchPendingTasks(),
        this.fetchTopDorms()
      ]);
      
      // 隐藏加载状态
      this.setData({ isLoading: false });
    } catch (err) {
      console.error('获取首页数据失败', err);
      wx.showToast({
        title: '获取数据失败，请重试',
        icon: 'none'
      });
      this.setData({ isLoading: false });
    }
  },

  // 获取待办整改任务
  fetchPendingTasks: async function() {
    const db = wx.cloud.database();
    const _ = db.command;

    try {
      // 获取用户数据，包含宿舍信息
      const userData = wx.getStorageSync('userData');
      const userRole = wx.getStorageSync('userRole');
      
      let query = db.collection('tasks').where({
        status: _.in(['待整改', '已提交'])
      });

      // 如果是学生，只显示自己宿舍的待办
      if (userRole === '学生' && userData) {
        // 从宿舍信息中提取楼栋和房间号
        const dormitory = userData.dormitory; // 格式如 "2栋203"
        if (dormitory) {
          const matches = dormitory.match(/(\d+)栋(\d+)/);
          if (matches) {
            const building = matches[1];
            const roomNo = matches[2];
            
            // 添加宿舍筛选条件
            query = query.where({
              building: building,
              roomNo: roomNo
            });
          }
        }
      }

      const res = await query
        .orderBy('deadline', 'asc')
        .limit(3)
        .get();
      
      const tasks = res.data.map(task => {
        task.roomInfo = `${task.building}栋${task.roomNo}`;
        if (task.deadline) {
          const deadlineDate = new Date(task.deadline);
          task.deadline = `${deadlineDate.getMonth() + 1}月${deadlineDate.getDate()}日`;
        } else {
          task.deadline = '无截止日期';
        }
        return task;
      });
      
      this.setData({ tasks });
    } catch (err) {
      console.error('获取待办任务失败', err);
      this.setData({ tasks: [] }); 
    }
  },

  // 获取前五名宿舍
  fetchTopDorms: async function() {
    const db = wx.cloud.database();
    try {
      // 按照分数降序获取前5名宿舍，并且只包括分数≥90的优秀宿舍
      const res = await db.collection('dorms')
        .where({
          currentScore: db.command.gte(90) // 只包括90分以上的宿舍
        })
        .orderBy('currentScore', 'desc')
        .limit(5)
        .get();
      
      // 处理宿舍数据，添加等级信息和要显示的图片
      const topDorms = res.data.map(dorm => {
        dorm.level = getDormLevel(dorm.currentScore);
        // 优先使用 showcaseImages，然后是 images，最后是默认图片
        if (dorm.showcaseImages && dorm.showcaseImages.length > 0) {
          dorm.displayImage = dorm.showcaseImages[0];
        } else if (dorm.images && dorm.images.length > 0) {
          dorm.displayImage = dorm.images[0];
        } else {
          dorm.displayImage = '/images/default-dorm.jpg'; // 确保有默认图片路径
        }
        return dorm;
      });
      
      // 设置标题
      let dormLevel = "宿舍排行榜";
      if (topDorms.length > 0) {
        dormLevel = "优秀宿舍展示";
      }
      
      this.setData({ 
        topDorms,
        dormLevel
      });
    } catch (err) {
      console.error('获取宿舍排行失败', err);
      throw err;
    }
  },

  // 跳转到宿舍详情
  goToDormDetail: function(e) {
    const dormId = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/dormDetail/dormDetail?id=${dormId}`
    });
  },
  
  // 跳转到任务详情
  goToTaskDetail: function(e) {
    const taskId = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/taskDetail/taskDetail?id=${taskId}`
    });
  },

  // 跳转到扫码评分页面
  goToScan: function() {
    wx.navigateTo({
      url: '/pages/scoring/scoring'
    });
  },
  goToAI: function() {
    wx.navigateTo({
      url: '/pages/chatBot/chatBot'
    });
  }
});